<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Помошник для работы с email файлами
 * 
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */

/**
 * Получение письма из файла
 *
 * @param string $name Название файла письма
 * @param string $subject Заголовок письма
 * @param string $content Контент письма
 * @param array $data Массив для замены
 * @return bool
 */
function get_email($name, &$subject = '', &$content = '', $data = array()) {
   $obj =& get_instance();
   $file_name = APPPATH . 'views/' . $obj->config->item('language') . '/emails/' . $name . '.html';
   if (file_exists($file_name)) {
      $content = $obj->parser->parse('emails/' . $name . '.html', $data, true);
      $match = array();
      if (preg_match('~{%subject%}(.*?){%/subject%}~', $content, $match)) {
         $subject = $match[1];
         $content = ltrim(str_replace($match[0], '', $content));
      }
      return true;
   }
   return false;
}

/**
 * Сохрание шаблона письма
 *
 * @param string $name Название файла письма
 * @param string $subject Заголовок письма
 * @param string $content Контент письма
 * @return bool
 */
function save_email($name, $subject, $content) {
   $obj =& get_instance();
   $content = "{%subject%}" . $subject . "{%/subject%}\n" . $content;
   $file_name = APPPATH . 'views/' . $obj->config->item('language') . '/emails/' . $name . '.html';
   if (false !== ($fp = fopen($file_name, 'w'))) {
      fwrite($fp, $content);
      fclose($fp);
      return true;
   }
   return false;
}

/**
 * Отправка письма
 *
 * @param string $name Название файла письма
 * @param string $email Получатель письма
 * @param array $data Данные для замены
 * @return bool
 */
function send_email($name, $email, $data) {
   $obj =& get_instance();
   $subject = '';
   $content = '';
   $data['site_name'] = $obj->variables->get('site_name');
   if (get_email($name, $subject, $content, $data)) {
      // Высылаем мыло
      $obj->load->plugin('phpmailer');
      $mail = new PHPMailer();
      $mail->Mailer = 'mail';
      $mail->CharSet = 'utf-8';
      $mail->ContentType = 'text/html';
      $mail->From = $obj->variables->get('site_email');
      $mail->FromName = $obj->variables->get('site_name');
      $mail->AddAddress($email);
      $mail->Subject = $subject;
      $mail->Body = $content;
      if ($mail->Send()) {
         return true;
      }
   }
   return false;
}
